﻿using System;
using System.Globalization;
using Autofac;
using ComputerVision.BaseForm;
using ComputerVision.Common;
using ComputerVision.Data;
using ComputerVision.Services;

namespace ComputerVision.LoaiXeForm
{
    public partial class frmLoaiXeDetail : frmDetail
    {
        private readonly IService<LoaiXe> _loaiXeService;
        //private readonly IUserService<aspnet_Users> _userService;
        public frmLoaiXeDetail()
        {
            InitializeComponent();
            _loaiXeService = Program.Container.Resolve<IService<LoaiXe>>();
            //_userService = Program.Container.Resolve<IUserService<aspnet_Users>>();
            Text = @"Thêm mới Loại xe";
            //tx.Focus();
        }

        public frmLoaiXeDetail(Guid id)
        {
            InitializeComponent();
            _loaiXeService = Program.Container.Resolve<IService<LoaiXe>>();
            //_userService = Program.Container.Resolve<IUserService<aspnet_Users>>();
            Text = @"Sửa Loại xe";
            txtTenXe.Focus();

            _fromtype = Constants.TypeForm.Edit;
            guid = id;

            var item = _loaiXeService.Detail(id);
            if (item != null)
            {
                txtTenXe.Text = item.Ten;
                //txtGiaTien.Text = item.GiaTien.ToString();
                //txtGiaTien.Text = String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:C0}", item.GiaTien.ToString());
                txtGiaTien.Text = string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:C0}", item.GiaTien);
            }
        }

        #region Validation

        protected override bool Validator()
        {
            bool flag = true;

            errorProvider.Dispose();

            if (string.IsNullOrEmpty(txtTenXe.Text))
            {
                errorProvider.SetError(txtTenXe, "Bạn chưa nhập tên xe. Xin vui lòng kiểm tra lại");
                flag = false;
            }

            if (!string.IsNullOrEmpty(txtGiaTien.Text.Replace(",", "").Replace("$", "")))
            {
                decimal result;
                flag = decimal.TryParse(txtGiaTien.Text.Replace(",", "").Replace("$", ""), out result);
                if (!flag)
                {
                    errorProvider.SetError(txtGiaTien, "Bạn nhập giá xe không hợp lệ. Xin vui lòng kiểm tra lại");
                }

            }

            return flag;
        }

        #endregion

        protected override void Insert()
        {
            try
            {
                decimal? giaxe = null;
                var model = new LoaiXe
                {
                    Id = Guid.NewGuid(),
                    Ten = txtTenXe.Text,
                    GiaTien = (!string.IsNullOrEmpty(txtGiaTien.Text)) ? decimal.Parse(txtGiaTien.Text.Replace(",", "").Replace("$", "")) : giaxe,
                    Created = DateTime.Now,
                    CreatedBy = Constants.CurrentUser,
                    Modified = DateTime.Now,
                    ModifiedBy = Constants.CurrentUser
                };
                _loaiXeService.Create(model);
            }
            catch (Exception ex)
            {
                AlertList.Error("Lỗi phát sinh khi tạo mới dữ liệu.");
            }
        }

        #region Edit

        protected override void Edit()
        {
            var item = _loaiXeService.Detail(guid);
            decimal? giaxe = null;
            if (item != null)
            {
                item.Ten = txtTenXe.Text;
                item.GiaTien = (!string.IsNullOrEmpty(txtGiaTien.Text)) ? decimal.Parse(txtGiaTien.Text.Replace(",", "").Replace("$", "")) : giaxe;
                item.Modified = DateTime.Now;
                item.ModifiedBy = Constants.CurrentUser;
                _loaiXeService.Update(item);
            }
        }

        #endregion

        private void txtGiaTien_TextChanged(object sender, EventArgs e)
        {
            string value = txtGiaTien.Text.Replace(",", "").Replace("$", "");
            decimal ul;
            if (decimal.TryParse(value, out ul))
            {
                txtGiaTien.Text = string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:N0}", ul);
            }
            txtGiaTien.SelectionStart = txtGiaTien.Text.Length + 1;
        }


    }
}
